Address scramble

ABSTRACT

A method for operating a memory cell array, the method comprising assigning word lines of a memory cell array as addresses for writing sets of data thereto from a cache memory, and scrambling addresses of the sets of data by writing a first chunk of the particular set of data from the cache memory to a first word line of the array, and writing a second chunk of the particular set of data from the cache memory to a second word line of the array, the first chunk comprising a first subset of the particular set of data and the second chunk comprising a second subset of the particular set of data.

FIELD OF THE INVENTION

[0001] The present invention relates generally to performing read and write operations on non-volatile memory (NVM) arrays, such as electrically erasable, programmable read only memory (EEPROM) arrays, and particularly to methods for performing such read and write operations with address scrambling.

BACKGROUND OF THE INVENTION

[0002] Non-volatile memory (NVM) arrays, such as but not limited to, electrically erasable, programmable read only memory (EEPROM) arrays, are utilized for storage of data. Typically, the data stored therein may be changed, either by programming or erasing multiple times over the lifetime of the array. In NVM arrays, each cell may be individually programmed. In EEPROM arrays, each cell may be individually erased, as opposed to erasable, programmable read only memory (EPROM or FLASH arrays, wherein groups of cells, instead of individual cells, may be erased.

[0003] Reference is now made to FIG. 1, which illustrates a typical NVM array 10. The NVM array 10 may typically comprise rows and columns of memory cells 12 connected to word lines 14 (rows of the array) and bit lines 16 (columns). The memory cells 12 may store one or more bits (e.g., single bit cells or dual bit cells). The description follows for dual bit cells having a left-side bit 18 and a right-side bit 19 in the sense of FIG. 1.

[0004] Each memory cell may be connected to one word line and at least one bit line. Depending on the array architecture, another terminal of the memory cell may be connected to another bit line as shown in FIG. 1, in which case one of the bit lines is called the drain line and the other is the source line. Other connections are also possible in other array architectures, such as connecting to a common source ground. Reading, programming (also referred to as writing) or erasing bits of cells requires application of certain voltages to the word line and bit lines.

[0005] Programming a bit of a memory cell increases the threshold voltage V_(t) thereof. Programming typically comprises application of a positive voltage to the word line and drain line connected to the bit to be programmed, with the source grounded. Reading the bit typically comprises application of a much lower positive voltage to the word line than that used for writing, and a positive voltage to the drain, with the source grounded. Erasing the cell decreases the threshold voltage V_(t). Erasing typically comprises application of a negative voltage to the word line and a positive voltage to the drain line, with the source floating.

[0006] Program-word-line voltages are generally applied only to the word line to which the bit to be programmed is connected. All other word lines in the array are typically grounded in order to avoid various problems, such as but not limited to, unwanted programming of bits on other word lines and unwanted disturbs to other bits in the array. Accordingly, a single write operation may be used to program a byte of data by programming the data into bits that are connected to a common word line.

[0007] A user wishing to write data to a NVM array may typically write the data to a cache memory, such as but not limited to, a static random access memory (SRAM). The cache memory routes or “addresses” the data to the appropriate bits in the NVM array. As mentioned above, a single write operation may program a byte of data to bits connected to a common word line. Therefore, in an efficient write operation, a byte address would comprise both the left-side bits 18 and the right-side bits 19 of the cells on a common word line, as indicated by reference numeral 20 in FIG. 1.

[0008] Unlike a write (i.e., program) operation, in a read operation it may be possible to use more than one word line at a time. This may be possible due to the lower word line voltages used in a read operation, which may be sufficiently low so as not to cause unwanted disturbs or programming of other bits in the array. There is an incentive to use more than one word line at a time, because it would speed up the read operation. In order to read bits on multiple word lines at the same, the bits should be connected to common bit lines. Accordingly, the left-side bits 18 of a given cell would belong to a different byte address than the right-side bits 19 of the same cell, as indicated by reference numeral 22 in FIG. 1.

[0009] In light of the foregoing explanation, in an effort to speed up the reading operation, a conflict may exist in the byte addresses of an NVM array. In the write operation, the byte address may comprise both the left-side bits 18 and the right-side bits 19 of the cells on a common word line. However, in the read operation, the byte address may comprise only the left-side bits 18 over multiple word lines (or the right-side bits 19 over multiple word lines). This poses a problem in addressing the bytes for both write and read operations.

SUMMARY OF THE INVENTION

[0010] The present invention seeks to provide solutions to the abovementioned conflict between write and read operations in an NVM array. The invention may be carried out with any kind of NVM cell and array, such as but not limited to, nitride read-only memory (NROM) cells and arrays. The invention may be implemented in a variety of applications, such as but not limited to, mass storage or code flash applications, for example.

[0011] In accordance with a preferred embodiment of the present invention, data may be stored, such as in terms of bytes of data, in a cache memory, such as but not limited to, a static random access memory (SRAM). The bytes of data may be divided into chunks of data. Each byte may have a particular word line address for writing to the array. Writing from the cache memory to the array may comprise scrambling the word line addresses of the chunks of data such that one chunk is written to a first word line address and another chunk is written to a different word line address. In this manner, it may be possible to store the bits associated with an entire byte along a common bit line. Reading from the array may then comprise reading the bits of the byte along common bit lines, thereby descrambling the chunks back to their original bytes.

[0012] There is thus provided in accordance with an embodiment of the invention a method for operating a memory cell array, the method comprising assigning word lines of a memory cell array as addresses for writing sets of data thereto from a cache memory, and scrambling addresses of the sets of data by writing a first chunk of the particular set of data from the cache memory to a first word line of the array, and writing a second chunk of the particular set of data from the cache memory to a second word line of the array, the first chunk comprising a first subset of the particular set of data and the second chunk comprising a second subset of the particular set of data.

[0013] In accordance with an embodiment of the invention the method further comprises reading the particular set of data from the array by serially reading the first chunk from the first word line and reading the second chunk from the second word line. The data may comprise at least one byte that comprises at least two chunks of at least four bits.

[0014] Further in accordance with an embodiment of the invention the method comprises assigning the addresses to bits A1, . . . An in the cache memory, wherein An is the most significant bit (MSB), and assigning A0, the least significant bit (LSB), to a bit of information, called “chunk select”, adapted to determine which chunk of the bits is to be read or written. The sets of data may be written to the cache memory while not writing to the chunk select. The first and second word lines may comprise adjacent or non-adjacent word lines.

[0015] Still further in accordance with an embodiment of the invention the method comprises reading the particular set of data from the array by switching the chunk select from the LSB to bit A1 and assigning the LSB to the first word line, reading the first chunk from the first word line, switching the chunk select from bit A1 to the LSB and assigning bit A1 to the second word line, and reading the second chunk from the second word line.

[0016] In accordance with an embodiment of the invention the method further comprises internally writing from the memory cell array back to the cache memory by descrambling the scrambling of the addresses of the sets of data.

BRIEF DESCRIPTION OF THE DRAWINGS

[0017] The present invention will be understood and appreciated more fully from the following detailed description taken in conjunction with the appended drawings in which:

[0018]FIG. 1 is a simplified illustration of a non-volatile memory (NVM) array;

[0019]FIG. 2 is a simplified illustration of an array architecture for a NVM array, in accordance with an embodiment of the present invention; and

[0020]FIG. 3 is a simplified illustration of write and read operations using address scrambling in the architecture of FIG. 2, in accordance with an embodiment of the present invention.

DETAILED DESCRIPTION OF THE PRESENT INVENTION

[0021] Reference is now made to FIG. 2, which illustrates an array architecture for a NVM array, in accordance with an embodiment of the present invention. As in FIG. 1, the NVM array may comprise dual bit memory cells 12 connected to word lines 14 and bit lines 16. Each dual bit cell 12 may comprise a left-side bit and a right-side bit. It is emphasized that the invention is not limited to this architecture.

[0022] One sector 26 of the array may be defined by four columns of dual bit cells, a total of 8 bits or 1 byte for each word line 14 of the sector 26 (although the invention is not limited to these values). The sector 26 may comprise any number of word lines 14. In the illustrated embodiment, the sector 26 comprises 128 word lines (WL 0, WL 1, WL 2, . . . WL 127), which amounts to one page (=128 bytes). However, it is emphasized that the invention is not limited to these values.

[0023] In accordance with an embodiment of the present invention, one or more sense amplifiers 30 may be used to read bits of the array. For example, in the illustrated embodiment, there are shown four sense amplifiers SAO, SA1, SA2 and SA3, wherein each sense amplifier 30 may be used to read two bits of a byte. Accordingly, since each byte of data comprises 8 bits, reading a byte may require two read operations performed serially on groups of 4 bits, these groups being herein referred to as chunks. It is appreciated, however, that the invention is not limited to bytes nor to chunks of 4 bits, and other amounts of bits may be used to carry out the invention.

[0024] Reference is now made to FIG. 3, which illustrates write and read operations using address scrambling in the architecture of FIG. 2, in accordance with an embodiment of the present invention. A user may write data to a cache memory 32, such as but not limited to, a static random access memory (SRAM), herein referred to as SRAM 32. SRAM 32 addresses the data to the appropriate bits in the NVM array. The data is preferably written to the SRAM 32 in a byte granularity.

[0025] SRAM 32 may comprise bits A0, A1, . . . An, wherein A0 is the least significant bit (LSB) and An is the most significant bit (MSB). The word line addresses (“w1 addr”) may comprise n bits A1, . . . An, whereas the LSB (A0) may be dedicated to storing a bit of information referred to as “chunk select address bit” or simply “chunk select”, which may be used to determine which chunk of bits is to be read or written at each step of the process, as is explained further hereinbelow. During writing of data to SRAM 32, as indicated by reference arrow 34, the chunk select address bit (LSB) may be ignored.

[0026] As mentioned before, each byte may comprise two chunks of 4 bits. For example, byte 0 may comprise “chunk A byte 0” and “chunk B byte 0” and byte 1 may comprise “chunk A byte 1” and “chunk B byte 1”.

[0027] Data may then be written from SRAM 32 to the array by scrambling the addresses of the chunks of bits of two different bytes, such as two neighboring bytes. For example, as indicated by arrows 40, chunk A byte 0 and chunk A byte 1 may be written to first word line WL A0. As indicated by arrows 42, chunk B byte 0 and chunk B byte 1 may be written to second word line WL A1 in the array. In this example, the chunks have been written to adjacent word lines, but the invention is not limited to writing to adjacent word lines, and the chunks may be written to non-adjacent word lines. It is noted that while the bytes are read from SRAM 32, only the word line addresses may be active.

[0028] The chunk select address may control the address scrambling. For example, the chunk select address may be activated to generate “write data” bytes, wherein:

[0029] Write data byte 0={chunk A byte 0, chunk A byte 1}

[0030] Write data byte 1={chunk B byte 0, chunk B byte 1}

[0031] The rest of the bytes may be accordingly written from SRAM 32 to the array.

[0032] Internally writing from the array to SRAM 32 may be performed by descrambling the abovementioned address scrambling.

[0033] Read operations may be performed in a chunk level granularity (e.g., 4 bits per chunk). For two read operations that follow one after the other, the LSB address may toggle between the chunk select and the least significant bit of the write address, as is now explained.

[0034] During the first user read cycle, chunk A of byte 0 may be read by switching the “chunk select” and “WL A0” addresses, as indicated by arrow 47, such that “WL A0” is the LSB address and the “chunk select” is the A1 address, as indicated by arrow 44. After reading the first 4 bits (i.e., chunk A) of byte 0, the next 4 bits (i.e., chunk B) of byte 0 may be read by incrementing the word line to the WL A1 address and switching the chunk select to the LSB address, as indicated by arrow 46. The alternate switching between the chunk select and the incremental word line addresses may continue until all the bytes are read from the array.

[0035] It is noted that accessing the word line address in a chip is generally significantly slower than accessing bit line addresses. Accordingly, inserting the word line address before the bit select address may provide additional clock time for switching between word lines, thereby improving the speed of the read access.

[0036] It will be appreciated by persons skilled in the art that the present invention is not limited by what has been particularly shown and described herein above. Rather the scope of the invention is defined by the claims that follow: 

What is claimed is:
 1. A method for operating a memory cell array, the method comprising: assigning word lines of a memory cell array as addresses for writing sets of data thereto from a cache memory; and scrambling addresses of said sets of data by writing a first chunk of said particular set of data from said cache memory to a first word line of said array, and writing a second chunk of said particular set of data from said cache memory to a second word line of said array, said first chunk comprising a first subset of said particular set of data and said second chunk comprising a second subset of said particular set of data.
 2. The method according to claim 1, further comprising reading said particular set of data from said array by serially reading said first chunk from said first word line and reading said second chunk from said second word line.
 3. The method according to claim 1, wherein said data comprises at least one byte that comprises at least two chunks of at least four bits.
 4. The method according to claim 1, wherein assigning comprises assigning said addresses to bits A1, . . . An in said cache memory, wherein An is the most significant bit (MSB), and assigning A0, the least significant bit (LSB), to a bit of information, called “chunk select”, adapted to determine which chunk of said bits is to be read or written.
 5. The method according to claim 4, further comprising writing said sets of data to said cache memory while not writing to said chunk select.
 6. The method according to claim 1, wherein said first and second word lines comprise adjacent word lines.
 7. The method according to claim 1, wherein said first and second word lines comprise non-adjacent word lines.
 8. The method according to claim 5, further comprising reading said particular set of data from said array by switching said chunk select from the LSB to bit A1 and assigning the LSB to said first word line, reading said first chunk from said first word line, switching said chunk select from bit A1 to the LSB and assigning bit A1 to said second word line, and reading said second chunk from said second word line.
 9. The method according to claim 1, further comprising internally writing from said memory cell array back to said cache memory by descrambling said scrambling of the addresses of said sets of data. 